package com.kong.entity.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.kong.common.annotation.Excel;
import com.kong.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 加油
 *
 * @author konglingfeng
 * @date 2025/11/1
 * @desc
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceRules extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 规则名称，如“标准班”、“夜班” */
    @Excel(name = "规则名称，如“标准班”、“夜班”")
    private String ruleName;

    /** 规定上班时间，例如 09:00:00 */
    @JsonFormat(pattern = "HH:mm:ss")
    @Excel(name = "规定上班时间，例如 09:00:00", width = 30, dateFormat = "HH:mm:ss")
    private Date workStartTime;

    /** 允许迟到宽限分钟数，例如迟到5分钟内不算 */
    @Excel(name = "允许迟到宽限分钟数，例如迟到5分钟内不算")
    private Long lateAfterMinutes;

    /** 真正判定为迟到的时间点（可选，用于查询优化） */
    @Excel(name = "真正判定为迟到的时间点", readConverterExp = "可=选，用于查询优化")
    private Date considerLateAfter;

    /** 规定下班时间，例如 18:00:00 */
    @JsonFormat(pattern = "HH:mm:ss")
    @Excel(name = "规定下班时间，例如 18:00:00", width = 30, dateFormat = "HH:mm:ss")
    private Date workEndTime;

    /** 允许早退宽限分钟数 */
    @Excel(name = "允许早退宽限分钟数")
    private Long earlyLeaveBeforeMinutes;

    /** 真正判定为早退的时间点 */
    @JsonFormat(pattern = "HH:mm:ss")
    @Excel(name = "真正判定为早退的时间点", width = 30, dateFormat = "HH:mm:ss")
    private Date considerEarlyBefore;

    /** 是否启用（1=启用，0=禁用） */
    @Excel(name = "是否启用", readConverterExp = "1==启用，0=禁用")
    private Integer enabled;

    /** 规则生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "规则生效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date effectiveDate;

    /** 记录创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "记录创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createdTime;

    /** 记录更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "记录更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date updatedTime;

}
